# -*- coding:utf-8 -*-
import os
import unittest

import requests
from ddt import ddt, file_data, unpack

import app
from api.login_api import LoginAPI
from utils.YamlUtils import YamlUtils


@ddt
class TestLoginAPI(unittest.TestCase):

       def setUp(self) -> None:
           self.LoginAPI=LoginAPI()
           self.session=requests.Session()

       # 登录成功
       @file_data(os.getcwd()+"/data/login.yaml")
       @unpack
       def test01_login_success(self,casename,username,password,message,status_code):
            #1.获取验证码
            resp_code = self.LoginAPI.get_verify_code(self.session)
            # 去响应结果进行参数提取  使用json()提取
            verify_code = resp_code.json()["data"]
            # 断言验证码接口是否成功
            self.assertEqual(resp_code.json()["message"],"获取验证码成功","预期结果和实际结果不符 message消息")
            self.assertEqual(resp_code.json()["code"],200,"预期结果和实际结果不符 code实际不是200")
            self.assertEqual(resp_code.status_code,200,"请求状态码不是200")
            #2.进行登录测试
            resp_login = self.LoginAPI.login(self.session,username,password,verify_code)
            if (resp_login.json()["message"] == "success"):
                token = resp_login.json()["token"]
                #存入到配置文件中
                app.TOKEN=token;
                #存入到文件中
                YamlUtils().writerYaml(token)
            self.assertEqual(resp_login.json()["message"],message,"实际结果与预期结果不符 message")
            self.assertEqual(resp_login.status_code,status_code,"实际结果与预期结果不符 请求状态码")

       def tearDown(self) -> None:
           self.session.close()




